/**
 * 工具函数封装
 */
export default {
    /**
     * 格式化日期
     * @param {Date} date - 日期对象
     * @param {string} rule - 格式规则，默认 'yyyy-MM-dd hh:mm:ss'
     * @returns {string} 格式化后的日期字符串
     */
    formateDate(date, rule) {
        // 确保传入的是Date对象
        if (!(date instanceof Date)) {
            date = new Date(date);
        }
        
        let fmt = rule || 'yyyy-MM-dd hh:mm:ss';
        const o = {
            'y+': date.getFullYear(),
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds(),
        };
        
        // 补零函数
        const padLeftZero = (str) => (str.toString().length === 1 ? `0${str}` : str);
        
        for (let k in o) {
            const regex = new RegExp(`(${k})`);
            const match = fmt.match(regex);
            
            if (match) {
                const key = match[0];
                let value = o[k];
                
                // 处理年份
                if (k === 'y+') {
                    const yearLength = key.length;
                    value = value.toString().substr(4 - yearLength);
                } 
                // 处理其他需要补零的字段
                else if (key.length > 1) {
                    value = padLeftZero(value);
                }
                
                fmt = fmt.replace(key, value);
            }
        }
        
        return fmt;
    },
    // 生成路由
    generateRoute(menuList) {
        let routes = []
        const deepList = (list) => {
            while (list.length) { 
                let item = list.pop()
                if (item.action) {
                    routes.push({                   
                        name: item.component,
                        path: item.path,
                        meta:{
                            title: item.menuName
                        },
                        component: item.component
                    })
                }
                if (item.children && !item.action) {
                    deepList(item.children)
                }
            }
        }
        deepList(menuList)
        return routes
    }
}
